

#ifndef UC_GEFILER_H
#define UC_GEFILER_H

#include "zAdAChar.h"
#include "zAcString.h"
#include "zgegbl.h"
#include "zacdb.h"
#pragma pack (push, 8)
class UcDbDwgFiler;
     
class 
GE_DLLEXPIMPORT ZSOFT_NO_VTABLE
UcGeFiler
{
protected:
    UcGeFiler();
public:

    virtual
    Ucad::ErrorStatus      readBoolean(ZSoft::Boolean*) = 0; 
    virtual
    Ucad::ErrorStatus      writeBoolean(ZSoft::Boolean) = 0;

    virtual
    Ucad::ErrorStatus      readBool(bool*) = 0; 
    virtual
    Ucad::ErrorStatus      writeBool(bool) = 0;

    virtual
    Ucad::ErrorStatus      readSignedByte(char *) = 0;
    virtual
    Ucad::ErrorStatus      writeSignedByte(char) = 0;

    virtual
    Ucad::ErrorStatus      readString(UcString &) = 0;
    virtual
    Ucad::ErrorStatus      writeString(const UcString &) = 0;

    virtual
    Ucad::ErrorStatus      readShort(short*) = 0; 
    virtual
    Ucad::ErrorStatus      writeShort(short) = 0;
     
    virtual
    Ucad::ErrorStatus      readLong(ZSoft::Int32*) = 0; 
    virtual
    Ucad::ErrorStatus      writeLong(ZSoft::Int32) = 0;
     
    virtual
    Ucad::ErrorStatus      readUChar(unsigned char*) = 0; 
    virtual
    Ucad::ErrorStatus      writeUChar(unsigned char) = 0;
     
    virtual
    Ucad::ErrorStatus      readUShort(unsigned short*) = 0; 
    virtual
    Ucad::ErrorStatus      writeUShort(unsigned short) = 0;
     
    virtual
    Ucad::ErrorStatus      readULong(ZSoft::UInt32*) = 0; 
    virtual
    Ucad::ErrorStatus      writeULong(ZSoft::UInt32) = 0;
          
    virtual
    Ucad::ErrorStatus      readDouble(double*) = 0; 
    virtual
    Ucad::ErrorStatus      writeDouble(double) = 0;
     
    virtual
    Ucad::ErrorStatus      readPoint2d(UcGePoint2d*) = 0; 
    virtual
    Ucad::ErrorStatus      writePoint2d(const UcGePoint2d&) = 0;
     
    virtual
    Ucad::ErrorStatus      readPoint3d(UcGePoint3d*) = 0; 
    virtual
    Ucad::ErrorStatus      writePoint3d(const UcGePoint3d&) = 0;
     
    virtual
    Ucad::ErrorStatus      readVector2d(UcGeVector2d*) = 0; 
    virtual
    Ucad::ErrorStatus      writeVector2d(const UcGeVector2d&) = 0;
     
    virtual
    Ucad::ErrorStatus      readVector3d(UcGeVector3d*) = 0; 
    virtual
    Ucad::ErrorStatus      writeVector3d(const UcGeVector3d&) = 0;

    virtual
    UcDbDwgFiler*          dwgFiler();

    virtual
    Ucad::ErrorStatus      readBytes(void*,ZSoft::UInt32) = 0;
    virtual
    Ucad::ErrorStatus      writeBytes(const void*, ZSoft::UInt32) = 0;
};

ZSOFT_FORCE_INLINE
UcDbDwgFiler* UcGeFiler::dwgFiler()
{
    return NULL;
}

#pragma pack (pop)
#endif
